#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	string s("defxxxabccba");
	sort(s.begin(), s.end());
	cout << s << endl;
	return 0;
}
//#include <iostream>
//#include <algorithm>
//using namespace std;
//int main()
//{
//	int arr[] = { 4,5,6,9,7,1,2,8,5,4,2 };
//	int size = sizeof(arr) / sizeof(arr[0]);
//	//起始位置和结束位置传的是地址
//
//		sort(arr, arr + size);
//	for (int i = 0; i < size; i++)
//	{
//		cout << arr[i] << " ";
//	}
//	cout << endl;
//	return 0;
//}
////版本1
//template <class RandomAccessIterator>
//void sort(RandomAccessIterator first, RandomAccessIterator last);
////void sort(开始位置，结束位置);
////first：指向要排序范围的第⼀个元素的迭代器或者指针。
////last：指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。
////版本2
//template <class RandomAccessIterator, class Compare>
//void sort(RandomAccessIterator first, RandomAccessIterator last, Compare
//	comp);
////void sort(开始位置，结束位置，⾃定义排序函数);
////first：指向要排序范围的第⼀个元素的迭代器或者指针。
////last：指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。
////comp：是⼀个⽐较函数或者函数对象
////这⾥开始位置和结束位置，可以是指针，也可以是迭代器
////⾃定义排序函数可以是函数，也可以是仿函数

//#include <iostream>
//using namespace std;
//struct Stu
//{
//	//成员变量
//	string name;
//	int chinese;
//	int math;
//	int total;
//};
////重载输出运算符
//ostream& operator<<(ostream& os, const Stu& s)
//{
//	os << "名字: " << s.name << endl;
//	os << "语⽂: " << s.chinese << endl;
//	os << "数学: " << s.math << endl;
//	os << "总分: " << s.total << endl;
//	return os;
//}
//int main()
//{
//	struct Stu s = { "张三", 90, 80, 170};
//	cout << s << endl;
//    return 0;
//}
//#include <iostream>
//using namespace std;
//struct Stu
//{
//	//成员变量
//	string name;
//	int chinese;
//	int math;
//	int total;
//};
//int main()
//{
//	struct Stu s = { "张三", 90, 80, 170};
//	cout << s << endl;
//	return 0;
//}
//int n = 100;
//float f = 3.14f;
//cout << n << endl;
//cout << f << endl;
////代码2演⽰构造和析构函数
//#include <iostream>
//using namespace std;
//struct Stu
//{
//	//成员变量
//	string name;
//	int chinese;
//	int math;
//	int total;
//	//构造函数
//	Stu()
//	{
//		cout << "调⽤构造函数" << endl;
//		name = "⼩明";
//		chinese = 99;
//		math = 95;
//		total = math + chinese;
//	}
//	//析构函数
//	~Stu()
//	{
//		cout << "调⽤析构函数" << endl;
//		//对于当前这个类的对象没有啥资源清理
//	}
//	void print_stu() //打印
//	{
//		cout << "名字:" << name << endl;
//		cout << "语⽂: " << chinese << endl;
//		cout << "数学: " << math << endl;
//		cout << "总分: " << total << endl;
//	}
//};
//int main()
//{
//	struct Stu s;
//	s.print_stu();
//	return 0;
//}
////代码1演⽰⾃定义成员函数
//#include <iostream>
//using namespace std;
//struct Stu
//{
//	//成员变量
//	string name;
//	int chinese;
//	int math;
//	int total;
//	void init_stu() //初始化
//	{
//		name = "⼩明";
//		chinese = 99;
//		math = 95;
//		total = math + chinese;
//	}
//	void print_stu() //打印
//	{
//		cout << "名字:" << name << endl;
//		cout << "语⽂: " << chinese << endl;
//		cout << "数学: " << math << endl;
//		cout << "总分: " << total << endl;
//	}
//};
//int main()
//{
//	struct Stu s;
//	s.init_stu();
//	s.print_stu();
//	return 0;
//}
//struct Score
//{
//	int chinese;
//	int math;
//	int engish;
//};
//struct Stu
//{
//	string name;
//	struct Score score;
//	int total;
//	int avg;
//};
//int main()
//{
//	struct Stu s = { "wangwu", {80, 90, 100}, 0, 0 }; //初始化
//	s.total = s.score.chinese + s.score.engish + s.score.math; //嵌套成员的访问
//	s.avg = s.total / 3;
//	cout << s.total << endl;
//	cout << s.avg << endl;
//	return 0;
//}
//#include <iostream>
//using namespace std;
//struct Stu
//{
//	string name;
//	int chinese;
//	int math;
//	int total;
//};
//int main()
//{
//	struct Stu s1;
//	s1.name = "lisi"; //直接赋值
//	s1.chinese = 95;
//	cin >> s1.math;   //输⼊
//	s1.total = s1.chinese + s1.math; //结构体成员直接参与运算
//	cout << s1.total << endl; //输出操作
//	return 0;
//}
//struct Stu s1 = { "zhangsan", 85, 95, 180 };
//struct Stu s2;
//s2 = s1;//整体赋值，这样s2的内容就会和s1的⼀样
